function EnterGateInfo(parent, gateId)
    local scene = LoadJson("gateInfo.json");
    local function returnCallBack(sender, eventType)
        if eventType == ccui.TouchEventType.ended then
            parent.layer:setEnabled(true);
            parent.data.remove[scene] = true;
        end
    end
    local button = scene.layer:getChildByName("return")
    SetButtonFunc(button, returnCallBack, "clkReturn")
    
    local gate = EXCEL.gate[gateId];
    if gate then
        local name = scene.layer:getChildByName("gateName")
        if name then
            name:loadTexture(gate.namePngPath)
        end
        local desc = scene.layer:getChildByName("gateDesc")
        if desc then
            local color = EXCEL.const["gateInfoColor"];
            desc:setColor(cc.c3b(color[1], color[2], color[3]))
            desc:setFontSize(EXCEL.const["gateInfoSize"])
   
            desc:setString(GetUtf8(gate.desc))
            desc:ignoreContentAdaptWithSize(false)
            desc:setContentSize(cc.size(325,500))
        end
        local gatePng = scene.layer:getChildByName("gatePng");
        if gatePng then
            gatePng:loadTexture(gate.png)
        end
    end

    local function enteGateCallBack(sender, eventType)
        if eventType == ccui.TouchEventType.ended then
            parent.layer:setEnabled(true);
            parent.data.remove[scene] = true;
            EnterLoading(gateId);
        end
    end
    local button = scene.layer:getChildByName("enterGate")
    SetButtonFunc(button, enteGateCallBack, "clkEntGate")
    
    parent:addChild(scene);
end

